// 这个脚本模拟前端从localStorage获取用户信息并请求订单的过程
// 请在浏览器控制台或Node.js环境中运行

// 模拟localStorage
const localStorage = {
    _data: {},
    getItem(key) {
        return this._data[key] || null;
    },
    setItem(key, value) {
        this._data[key] = value;
    },
    removeItem(key) {
        delete this._data[key];
    }
};

// 模拟用户登录后的数据
const userData = {
    user_id: 4,
    username: 'testuser',
    role: 'student'
};
localStorage.setItem('user', JSON.stringify(userData));

// 模拟fetch函数
function fetch(url, options = {}) {
    console.log(`正在请求: ${url}`);
    console.log('请求选项:', options);
    
    // 模拟网络请求
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            // 假设我们收到的是空数组响应
            const mockResponse = {
                ok: true,
                status: 200,
                headers: {
                    get(header) {
                        return header.toLowerCase() === 'content-type' ? 'application/json' : null;
                    }
                },
                json() {
                    return Promise.resolve([]);
                },
                text() {
                    return Promise.resolve('[]');
                }
            };
            
            console.log('模拟响应:', mockResponse);
            resolve(mockResponse);
        }, 500);
    });
}

// 模拟前端的fetchUserOrders函数
async function testFetchUserOrders() {
    try {
        const user = JSON.parse(localStorage.getItem('user'));
        
        if (!user) {
            console.error('用户未登录');
            return;
        }
        
        console.log('获取到的用户信息:', user);
        
        const response = await fetch(`http://localhost:5000/api/orders/user/${user.user_id}`);
        
        console.log('响应状态码:', response.status);
        console.log('响应ok:', response.ok);
        
        if (!response.ok) {
            throw new Error('获取订单数据失败');
        }
        
        const data = await response.json();
        console.log('解析后的JSON数据:', data);
        
        // 格式化订单数据
        const allOrders = data.map(order => ({
            id: order.order_id,
            orderTime: order.order_time,
            totalAmount: parseFloat(order.total_amount),
            status: order.order_status,
            items: order.order_details.map(detail => ({
                foodId: detail.food_id,
                foodName: detail.food_name,
                quantity: detail.quantity,
                price: parseFloat(detail.unit_price)
            }))
        }));
        
        console.log('格式化后的订单数据:', allOrders);
        console.log('测试成功！');
        
    } catch (error) {
        console.error('测试失败:', error.message);
        console.error('错误详情:', error);
    }
}

// 运行测试
console.log('开始测试前端订单请求流程...');
testFetchUserOrders();

// 注意：在Node.js环境中运行需要安装node-fetch并取消下面的注释
// const fetch = require('node-fetch');
// testFetchUserOrders();